home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Tele / Internet / UUPC 3.1b25 Folder / Documentation / 3.0 beta-test history & notes next >
Encoding:
Text File  |  1992-02-10  |  21.5 KB  |  432 lines  |  [TEXT/ALFA]

  1.   uupc 3.0 documentation notes [beta testing release]
  2. -----------------------------------------------------
  3.   written by Dave Platt <dplatt@snulbug.mtview.ca.us>
  4.  
  5.  
  6.   This package contains a beta-test version of uupc 3.0 for the
  7.   Macintosh. 
  8.  
  9.   This distribution contains the first draft of the "how to install
  10.   it" notes I've written up, in anticipation of the full uupc 3.0
  11.   general release.  I would very much appreciate your comments and
  12.   suggestions.  The files are in the "Documentation" folder.  The
  13.   "Protocol notes" and "Modems and cables" files touch on some
  14.   advanced topics, and you should read the other files before
  15.   tackling these. 
  16.  
  17.   The beta version has the following changes (and perhaps others
  18.   I've forgotten to mention):
  19.  
  20. * 3.0b30: set default memory partition size to 250k (down from the
  21.   384k of 3.0b29, but up from the 200k of earlier releases). Fixed
  22.   a bug introduced with the large-packet support; the 'g' protocol
  23.   should disconnect after 20 consecutive errors, not 20 errors in
  24.   any one session. Connections which terminate prematurely due to
  25.   file I/O problems will result in a "failed session" status being
  26.   stored in the status file, thus allowing the HoneyDanBer-style
  27.   fallback to work in this case as well as after failed calls.
  28.   Fixed a bug in the 'f' protocol retry logic.  Increased size of
  29.   buffers used during protocol startup, to prevent stack trashing
  30.   and subsequent crashes if remote site sends garbage and disconnects
  31.   during the handshaking sequence.  Fixed bug in timeout-recovery
  32.   code which could stomp on memory and hang Mac.  Fixed dialer so
  33.   that calling "All sites" doesn't initiate a slave-mode INCOMING
  34.   call.
  35.  
  36. * 3.0b29: added support for large packets in the 'g' protocol (up
  37.   to 256 bytes per packet).  Added error-checking code to the
  38.   rdata() routine so that disk I/O errors during file reception will
  39.   result in a "copy failed" status.  Added support for extra serial
  40.   ports which have shadow drivers (port 'c' opens device .Cin/.Cout,
  41.   'd' opens .Din/.Dout, etc.).  Added code to execute pending
  42.   inbound jobs in the queue at the beginning of a queue run as well
  43.   as at the end, to ensure a timely queue-flush if a previous uupc
  44.   session aborted.  Changed name format of inbound-rnews files to
  45.   "rnews.mmddyy.hhmmss.xxx" to make it clearer what's in these
  46.   files). 
  47.  
  48. * 3.0b28: fixed the serial-port timeout code to permit read
  49.   timeouts of greater than 32765 ticks...  this bug was preventing
  50.   SLEEPTIME values of 6 minutes or more from working properly when
  51.   uupc was waiting for an inbound call to arrive.  Added a Sam
  52.   Kinnison filter to the expect-string matcher...  it will now
  53.   report "match failure" after 3k bytes of input even if a timeout
  54.   hasn't occurred, to detect situations in which the modem or remote
  55.   host is sending a steady stream of gibberish.  Added support for
  56.   38400- and 57600-bit/second serial connections.  Modified
  57.   primitive "rnews" command to copy the inbound file to the spool
  58.   directory in binary mode rather than text mode, to allow for
  59.   support of compressed newsbatches. 
  60.  
  61. * 3.0b27: after placing a call, sending outbound files, and
  62.   receiving one or more inbound files, re-check the spool directory
  63.   when the remote site offers to hang up...  if new outbound files
  64.   have appeared while we were receiving, decline the hangup offer
  65.   and go back to the send-files phase.  This _is_ a multitasking
  66.   system, after all!
  67.  
  68. * 3.0b26: fixed a bug in scandir() introduced in 3.0b25.  Changed
  69.   the example configuration file to use Macintosh-style pathnames
  70.   rather than Unix-style ones. 
  71.  
  72. * 3.0b25: modified scandir() so that it compares only the first
  73.   seven characters of the remote host's name with the corresponding
  74.   characters in a C.  file's name.  This allows outbound files to be
  75.   sent to systems whose names are longer than seven characters. 
  76.  
  77. * 3.0b24: allow a Quit command (or a Shutdown or Restart from the
  78.   Finder) to terminate a wait for an inbound call. 
  79.  
  80. * 3.0b23: added the ability to shut down the Mac after placing a
  81.   set of calls.  To invoke this feature, launch uupc by double-
  82.   clicking on a uupc call-initiator file whose name ends in the
  83.   string " -Shutdown" (the "S" must be capitalized).  For example, a
  84.   file named "need -Shutdown" will place a call to any sites which
  85.   are scheduled to receive calls, or which have work pending; uupc
  86.   will shut down the Mac after the end of the last call in the
  87.   sequence. 
  88.  
  89. * 3.0b22: fixed yet another bug in the Mac-format-path handler
  90.   which prevented spool folders from being handled properly, if the
  91.   spool directory was "aimed" at a disk other than the one on which
  92.   the uupc/pcmail programs resided.  NOTE: do not use partial
  93.   pathnames in Macintosh format (":dir:dir")...  these are always
  94.   interpreted according to the Macintosh semantic (they're relative
  95.   to the current directory), and the current directory changes as
  96.   the programs run.  Bad Things occur... 
  97.  
  98. * 3.0b21: modified the THINK C ANSI file I/O library so that it
  99.   doesn't flush volume buffers to disk when closing a read-only
  100.   file.  This fix reduces disk-chattering and improves performance;
  101.   it shouldn't have any other effect on the program.  Also fixed a
  102.   hairy bug which caused the b20-revision directory-building code to
  103.   create two partially-complete hierarchies of directories if the
  104.   "diskname:dir:dir" format was used. 
  105.  
  106. * 3.0b20: the other-disk code in b19 could access existing (hand-
  107.   created) folders on other disks, but could not create such folders
  108.   on-the-fly.  Fixed. 
  109.  
  110. * 3.0b19: fix the directory-locating code to permit folders on
  111.   other than the default (application) volume to be used.  Folders
  112.   on other disks should be specified using Mac HFS notation (as
  113.   "diskname:dir:dir:dir") rather than in Unix pathname format (using
  114.   "/dir/dir/dir"). 
  115.  
  116. * 3.0b18: fix the "rnews" command so that it doesn't go into an
  117.   infinite loop, processing the same rnews command over and over and
  118.   over.  Internal reorganization of how pcmail.c is handled. 
  119.  
  120. * 3.0b17: minor bug-fixes, a full description of which I no longer
  121.   recall. 
  122.  
  123. * 3.0b16: the time-of-day field in the INCOMING entry in the
  124.   Systems file is now used to specify those times during which uupc
  125.   will accept incoming phone calls.  You are now required to have an
  126.   entry of this form if you wish to accept calls in slave mode... it's
  127.   no longer optional.  You may have two or more INCOMING entries,
  128.   with different time criteria, if you wish.  If you invoke slave
  129.   mode (or full-autopilot) at a time of day when incoming calls are
  130.   not allowed, uupc will inform you of this fact and go to sleep for
  131.   a few minutes, rather than camping on the phone.  You can now
  132.   control the amount of time that uupc sleeps between schedule runs,
  133.   and the amount of time that it camps on the phone waiting for
  134.   incoming calls, by setting a SLEEPTIME string in your
  135.   configuration file to the number of minutes that you wish the
  136.   program to sleep. 
  137.  
  138. * 3.0b15: increase size of printmsg buffer so that a very-long
  139.   line in the Systems file doesn't blow the stack and crash the
  140.   program if debugging mode is turned on (level 5 or above). 
  141.  
  142. * 3.0b14: don't go into an infinite loop if a D.  file mentioned
  143.   in a C.  workfile does not exist or cannot be read.  If the file
  144.   doesn't exist, assume that it was sent during a previous session
  145.   (which was, presumably, aborted before the workfile was completed)
  146.   and continue normally.  If any other I/O error occurs, terminate
  147.   the session. 
  148.  
  149. * 3.0b13: add a "-quit" option (accessible only by burying the
  150.   option in the name of a double-clickable launch file).  Add an
  151.   "Open a call file..." command to the File menu, thus allowing
  152.   call-configuration files to be double-clicked from the Finder even
  153.   if uupc is already running. 
  154.  
  155. * 3.0b12: allow debug level to be set to any value between 0 and
  156.   10, not just 0, 1, and 5. 
  157.  
  158. * 3.0b11: fix an uninitialized variable in the "time;retry"
  159.   parsing code for the Systems file, so that the HDB exponential
  160.   backoff feature works reliably.  Honor the existing debug level
  161.   when initiating calls from the "Call" menu, rather than forcing
  162.   the debug level to 0. 
  163.  
  164. * 3.0b10: the real (I think!) fix for the alias-file-parser
  165.   crashes on Mac Plus machines (amazing it didn't crash on other
  166.   machines as well!).  Now supports Systems-file entries which
  167.   mention hosts whose name is longer than 7 characters.  "Cancel
  168.   call" command will now terminate the call at the end of the
  169.   current work-file (if sending) or after the end of the current
  170.   file transfer (if receiving).  Updated sample Systems file to
  171.   correct errors, clarify the "evening" and "night" time periods,
  172.   and reflect the changes to the 'g' protocol negotiation. 
  173.  
  174. * 3.0b9: changed alias-file parser in an attempt to eliminate
  175.   crashes on Mac Plus machines.  Modified 'g' protocol negotiation
  176.   so that it will negotiate a 3-packet window by default (like uupc
  177.   2.x) rather than a 7-packet window (like earlier 3.0 betas). 
  178.   7-packet negotiation can be enabled by specifying 'g7' in the
  179.   protocol field of a Systems-file line. 
  180.  
  181. * 3.0b8: another small bug in the 'g' protocol error recovery code
  182.   bites the dust.  Fixed the launch-from-a-file code so that it
  183.   enables the menus properly.  Fixed the level-9 debug code to
  184.   display the expect strings and pending input. 
  185.  
  186. * 3.0b7: modified long-alias-line parser to keep the alias string
  187.   in a relocatable handle rather than in a malloc() string, to
  188.   reduce risk of memory fragmentation.  Modified 'f' protocol packet
  189.   reader to accept data from the serial port in big chunks if the
  190.   data arrives quickly enough; this should increase 'f' protocol
  191.   efficiency with fast modems, and/or leave more CPU time for other
  192.   processes.  Rewrote startup processing to allow uupc to place a
  193.   call to any neighbor site(s), or initiate automatic or slave mode,
  194.   based on the name of the document(s) from which uupc was launched. 
  195.   Extended the "expect" string parser to permit the match strings to
  196.   contain escape strings: \s (blank), \r (return), \n (newline), \t
  197.   (tab), or \\ (a single backslash). 
  198.  
  199. * 3.0b6: "Hey, Rocky! Wanna see me pull a 'g' protocol error
  200.   recovery algorithm out of my hat?" "But that trick _never_ works!"
  201.   "This time for sure! One! >NAK< Two >NAK<....." [The 1.11h engine
  202.   needed a few small changes to avoid excessive NAKs,
  203.   retransmissions, and session closures.] Added support for systems
  204.   whose names are 8 characters or longer...  uupc now sends the full
  205.   nodename during handshaking, rather than only the first 7
  206.   characters (but you can override this by adding a SHORTNAME
  207.   resource string to your settings file), and takes care to compare
  208.   only the leading 7 characters of it's peer's name during the
  209.   handshake. 
  210.  
  211. * 3.0b5: added a "call as needed" mode (per schedule, or if work
  212.   is waiting) in addition to the Full Metal Autopilot mode (which
  213.   does the same, and also awaits incoming calls between times). 
  214.   Modified autopilot mode to ensure that inbound files received
  215.   during the call-out phase are processed immediately (rather than
  216.   after a five-minute-sleep awaiting an inbound call).  Imported
  217.   Drew Derbyshire's latest g protocol state engine from
  218.   UUPC/extended 1.11h.  Fixed remote-login shell to support "dumb"
  219.   inbound connections (no modem handshaking or chat script... 
  220.   requires a carriage return to elicit the login prompt) as well as
  221.   inbound connections initiated via the INCOMING alias (no carriage
  222.   return required to get the prompt). 
  223.  
  224. * 3.0b4: yet more fixes to slave mode and the remote-login shell. 
  225.   Modified mailer code to support long aliases, of up to 255
  226.   addresses (each line in the aliases file may be no more than 250
  227.   characters or so...  signal continuation by ending the line with a
  228.   '\' character).  Reduced the maximum length of an "rmail" command
  229.   which will be executed on a peer system to 128 bytes, to avoid
  230.   blowing uux command buffers. 
  231.  
  232. * 3.0b3: more fixes to slave mode (improved login-shell, less
  233.   likely to be confused by line noise or leftover stuff from the
  234.   modem chat sequence).  Fixed the code which rejects a remote
  235.   system's attempt to send or receive files to/from directories
  236.   other than ~/; the wrong response code was being sent, and some
  237.   Unix uucp systems would drop the line as a result.  Tweaked serial
  238.   I/O code to avoid reporting spurious timeouts when juggling
  239.   processes under MultiFinder or System 7. 
  240.  
  241. * 3.0b2: fixes slave mode (I'd broken it).  Added code to keep
  242.   from crashing when certain events occur on machines that don't
  243.   have the new Sound Manager.  Changed error-recovery process in 'g'
  244.   protocol engine to comply with recommendations made in DECUS
  245.   paper. 
  246.  
  247.   Changes since 2.1:
  248.  
  249. - It has a real Macintosh menu-and-dialog-box front end, courtesy
  250.   of Gary Morris at Telesoft, who sent me the complete source code
  251.   for his "2.3" version of uupc.  I've added a "Call" menu for
  252.   convenience. 
  253.  
  254. - It's MultiFinder friendly [Gary Morris]. 
  255.  
  256. - It has a cron-like call scheduler [Gary again]. 
  257.  
  258. - It will no longer lose mail if the destination mailbox is being
  259.   held open by another application...  the spool files are kept
  260.   rather than being discarded, and the rmail command will be
  261.   re-executed during the next run.  [Sak Wathanasin]
  262.  
  263. - It honors the "time" field in the System file, so you can
  264.   restrict the placing of calls to some of your neighbors to those
  265.   times when the phone rates are low [Gary Morris again]. 
  266.  
  267. - It allows you to specify some port setup information for use
  268.   when handling incoming calls in slave mode (via a pseudo-neighbor
  269.   named INCOMING, in the Systems file). 
  270.  
  271. - It supports anonymous uucp access, if you wish...  simply add a
  272.   pseudo-neighbor called ANONYMOUS to your Systems file, and it will
  273.   accept calls from any uucp system in the world. 
  274.  
  275. - It supports an "automatic" or "background" or "unattended" or
  276.   "autopilot" mode (I haven't settled on a name).  In this mode, it
  277.   will place outbound calls whenever there's work to be done, or
  278.   when the schedule file says to call.  Between outbound calls, it
  279.   will answer inbound calls from other systems and run in slave
  280.   mode. 
  281.  
  282. - It implements a HoneyDanBer-style exponential backoff algorithm
  283.   for retrying calls to systems that it couldn't reach before. 
  284.   After one failure, it waits 5 minutes...  after two, 10 minutes... 
  285.   after three, 20 minutes...  and so forth, up to a maximum of 23
  286.   hours.  You can override this algorithm by specifying an explicit
  287.   retry time in the "time" field (e.g.  "Any;10" says that calls can
  288.   be placed at any time of day, and retried after ten minutes).  The
  289.   backoff and explicit-retry times apply during calls to "all
  290.   sites", "sites with work pending", "scheduled sites", and
  291.   "autopilot mode".  If you tell uupc 3.0 to dial a specific site,
  292.   it will do so even if the retry interval has not run out. 
  293.  
  294. - It allows remote sites to request the sending of files from the
  295.   anonymous-uucp directory ("~/filename").  It's also capable of
  296.   requesting that a neighbor send it a specific file (I haven't yet
  297.   written any user-agent code which would place such a request in
  298.   the uupc spool directory...  but if one is there, it should handle
  299.   it OK).  [Code adapted from the UUPC/extended 1.1.1c software
  300.   package....  many people worked on this.]
  301.  
  302. - It implements file-transfer security...  any neighbor's request
  303.   to send a file anywhere other than the standard spooling directory
  304.   or the "~/" uucppublic directory, or to upload a file from
  305.   anywhere other than these places, will be rejected.  No such
  306.   restrictions exist for transfers initiated by uupc itself. 
  307.   [Adapted from UUPC/extended 1.1.1c]
  308.  
  309. - A new configuration string ROUTEVIA can specify a comma-
  310.   separated list of neighboring sites to which uupc (and pcmail) may
  311.   route mail if so requested by the user (or by an "rmail" command
  312.   on an incoming mailgram).  Mail to sites not on the ROUTVIA list
  313.   will be passed to the MAILSERVICE neighbor as was done before. 
  314.   This is a long way from being a 'smartmailer', but it's enough to
  315.   allow uupc 3.0 to act as a half-vast uucp forwarder...  perhaps
  316.   it's a 'not-entirely-dim mailer'?
  317.  
  318. - The uucp 'g' protocol now supports a window of up to 7 packets,
  319.   and will negotiate downwards to a smaller window if its peer
  320.   requires.  [UUPC/extended]
  321.  
  322. - The uucp 'f' protocol is now supported.  This protocol is
  323.   designed to run over X.25 PAD connections; it also works pretty
  324.   well over MNP and V.42 modem connections.  The connections must be
  325.   nearly-error-free, and flow-controlled; they don't need to support
  326.   8-bit data.  uupc 3.0 activates XON/XOFF flow control when you use
  327.   this protocol...  you must tell your modem to do likewise in the
  328.   dialing string.  [Piet Beertema, CWI, Amsterdam, Sep 1984]
  329.  
  330. - The serial-port routines now use non-blocking ("asynchronous")
  331.   writes, so that uupc can be writing one packet at the same time
  332.   that it's preparing the next one or processing ACKs.  This leads
  333.   to a substantial improvement in throughput at high speeds...  I
  334.   _think_ this will have fixed the incompatibility between uupc and
  335.   Telebit modems.  Somebody PLEASE test uupc 3.0 with a Telebit
  336.   modem in spoofing mode, and tell me how well it works (or
  337.   doesn't)!
  338.  
  339. - I've added a rather crude dialer called VADIC, which works with
  340.   a Racal-Vadic VS212 modem (thoroughly non-Hayes-compatible).  The
  341.   dialer works fine; I haven't used it since I got a better modem
  342.   and put my Vadic back on the shelf. 
  343.  
  344. - The Hayes dialer is no longer limited to operation at 1200 and
  345.   2400 bps, but can be used with higher-speed modems as long as they
  346.   accept a Hayes-compatible "AT" command set.  It works fine, for
  347.   example, with a USRobotics Courier HST Dual Standard modem using
  348.   V.32 at 9600 bits/second. 
  349.  
  350.   You must specify the modem's serial-port data rate in the Systems
  351.   file... it's no longer intuited to be 1200 or 2400.  ALL lines in
  352.   the Systems file are now one field longer, as they all include a
  353.   line speed as well as a "phone number" field.  Put a "-" in the
  354.   phone number field for direct-connect entries. 
  355.  
  356. - You can add additional characters to the "AT" command string
  357.   which is used for the initial modem handshaking.  To do this,
  358.   specify a dialer of "HAYES+whatever".  For example, "HAYES+&M0B0"
  359.   will request the Hayes dialer, with a handshake of "AT&M0B0"
  360.   (which tells a Dual Standard modem to use V.32 mode without MNP). 
  361.   You can use this capability to specify the modem's operating mode,
  362.   assure that the response codes will be Hayes-compatible, and so
  363.   forth. 
  364.  
  365. - When you write the expect/send string pairs in the Systems file,
  366.   you can specify strings which (if received) will cause uupc to
  367.   immediately abandon the attempt to connect and close the serial
  368.   port.  To do this, type the string you expect (_do_ want to
  369.   receive), a bullet (ASCII 165, hex A5, option-8 on US-keyboards,
  370.   [here represented as an asterisk]) the string which should
  371.   trigger an abort (_don't_ want to receive), a space, and then
  372.   the string you want to send in response to the expected string. 
  373.   For example if you're expecting a "Login:" prompt, and wish to
  374.   disconnect immediately if a "Not available" message arrives 
  375.   instead type "Login:*available" as the string-you-expect-to-receive.
  376.   If you wish, you can append several abort strings...  e.g.  
  377.   "Login:*available*down" will proceed normally if the string 
  378.   "Login:" arrives, and will immediately disconnect if the strings
  379.   "available" or "down" are received instead. 
  380.  
  381. - The Hayes dialer makes use of this abort-string feature; it will
  382.   immediately abandon a dialing attempt if the modem returns a BUSY
  383.   or NO CARRIER response.  The abort strings are buried in the
  384.   source code; if you want to change them you'll have to recompile. 
  385.  
  386. - uupc 3.0 will permit you to list several different phone numbers
  387.   for a neighbor's uucp system.  Simply duplicate the neighbor's
  388.   line in your Systems file, and edit the second and subsequent
  389.   lines to suit.  You can specify different line speeds, and
  390.   different chat sequences, if it's appropriate to do so.  uupc 3.0
  391.   will try these lines in sequence until it establishes a
  392.   connection.  It will _not_ establish multiple connections to a
  393.   neighbor during any one session...  if, for example, it gets
  394.   through on line #2, it will not dial line #3. 
  395.  
  396. - uupc 3.0 is more domain-aware than uupc 2.1.  If you've set up
  397.   the DOMAIN and NODENAME string in your profile, then uupc 3.0 will
  398.   "recognize" the following address formats on incoming mail:
  399.  
  400.       user                   user@domain
  401.       nodename!user          user%domain
  402.       nodename!domain!user   domain!user
  403.       
  404.  
  405.   Mail which arrives with any of these address-styles in its
  406.   envelope will be delivered to "USER" on your machine.  uupc 2.1
  407.   recognized only the first and last of these forms (I think... 
  408.   perhaps only the first!) and would "bounce" domain-addressed mail
  409.   back out to your MAILSERVICE neighbor. 
  410.  
  411. - I've added a bunch of status messages to the uucp engine, and
  412.   reworked some of the inter-layer flags so that the engine exits a
  413.   bit more gracefully in the face of protocol errors, line hangups,
  414.   and so forth. 
  415.  
  416.   uupc 3.0 seems quite capable of keeping a V.32 modem busy, as long
  417.   as the system at the other end of the phone line is able to keep
  418.   up with packets arriving at 9600 bps.  The throughput is quite
  419.   good...  sending data to an otherwise-unloaded SparcStation-1,
  420.   using a 7-packet 'g' protocol, I got throughputs of 885
  421.   characters/second of real user data.  The theoretical limit is
  422.   somewhere around 887 or 888, I think... 
  423.  
  424.   Please send problem reports, suggestions, polite letterbombs, and
  425.   so forth to me via email at "dplatt@snulbug.mtview.ca.us".  I'll
  426.   get back to you as fast as I can. 
  427.  
  428.   Thanks! Happy beta-testing!
  429.  
  430.  
  431.   Jan/29/1992
  432.